#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sensor_data.pb-c.h"

// 模拟发送数据
void send_data(uint8_t *buffer, size_t len) {
	// 这里可以实现发送数据的逻辑，比如通过网络发送
	printf("Sending data of length: %zu\n", len);
	for (size_t i = 0; i < len; i++) {
		printf("%02x ", buffer[i]);
	}
	printf("\n");
}

int main() {
	// 创建一个 Sensor__SensorData 对象
	Sensor__SensorData msg = SENSOR__SENSOR_DATA__INIT;

	// 设置传感器 ID 和名称
	msg.has_id = 1;
	msg.id = 123;
	msg.name = strdup("SensorA");
	msg.has_temperature = 1;
	msg.temperature = 25.5;

	// 计算序列化后的大小
	size_t len = sensor__sensor_data__get_packed_size(&msg);
	uint8_t *buffer = malloc(len);
	if (buffer == NULL) {
		fprintf(stderr, "Failed to allocate memory for buffer\n");
		return -1;
	}

	// 序列化数据
	sensor__sensor_data__pack(&msg, buffer);

	// 发送数据
	send_data(buffer, len);

	// 释放内存
	free(msg.name);
	free(buffer);

	return 0;
}